package org.eraser.controller;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.BufferedOutputStream;
import java.io.IOException;

@RestController
public class MyController {

    @GetMapping("/hello")
    public String test() {
        return "hello";
    }

    /**
     * 文件下载 下载资源是jar包中的文件
     *
     * @param request  请求
     * @param response 相应
     * @throws IOException 异常
     */
    @GetMapping("/get/file")
    public void getFile(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 读jar包中的文件 注意只能读取文件 不能读取目录
        ClassPathResource classPathResource = new ClassPathResource("temp/test.txt");

        // 类路径中 获取绝对路径 是会报错的 (读类路径下的文件没问题 但是不能获取绝对路径) classPathResource.getFile().getAbsolutePath()
        // log.info("类路径下文件的绝对路径: {}", classPathResource.getFile().getAbsolutePath());

        // 读取类路径下的文件 直接获取file也会报错 File file = classPathResource.getFile();
        // log.info("类路径下文件的绝对路径: {}", file.getAbsolutePath());
        byte[] contentAsByteArray = classPathResource.getContentAsByteArray();

        response.reset();
        response.setContentType("application/octet-stream");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + classPathResource.getFilename());

        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
        bufferedOutputStream.write(contentAsByteArray);
        bufferedOutputStream.flush();
        bufferedOutputStream.close();
    }
}
